package com.king.edu.dao;

import com.king.edu.pojo.Resume;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;

import java.util.List;

/**
 * @ClassName: ResumeDAO
 * @Description: JPA DAO层接口
 * JpaRepository<操作的实体类，主键类型> 封装基本CRUD操作
 * JpaSpecificationExecutor<操作的实体类> 封装复杂的查询（分页、排序）
 * @Author: wangchangyong
 * @Date: 2020/4/16 09:36
 * @Version: 1.0.0
 **/
public interface ResumeDAO extends JpaRepository<Resume, Long>, JpaSpecificationExecutor<Resume> {

    /**
     * 基于Jpql语句查询
     * Jpql操作对象和属性，语句类型sql
     * @return
     */
    @Query(value = "from Resume where name = ?1 and phone = ?2")
    List<Resume> findByJpql(String name, String phone);

    /**
     * 基于Sql语句查询
     * nativeQuery设置为true，默认为false（jpql）
     * @return
     */
    @Query(value = "select  * from tb_resume where phone like  ?1", nativeQuery = true)
    List<Resume> findBySql(String phone);

    /**
     * 方法命名规则查询
     * 按照name模糊查询
     * 方法名：findBy(deleteBy...) + 属性名(首字母大写) + 查询方式(模糊、等价查询，默认等价查询)
     * 多个字段 属性名 + 查询方式 + and/or
     * @return
     */
    List<Resume> findByNameLike(String name);

    List<Resume> findByNameLikeAndPhone(String name, String phone);

    /**
     * 动态查询(条件确定)
     * 查询条件封装成一个对象传入Dao层，这个对象叫做Specification（对条件的一个封装）
     */


}
